Jeg er en absolut nybegynder, har været selvstuderende i to uger som forberedelse til en bootcamp, der kommer om en måned. I et forsøg på at forbedre mine færdigheder og "lære at tænke som en udvikler" har jeg påtaget mig et projekt, der forsøger at løse et problem i den virkelige verden. Min kone driver en virksomhed, der kræver, at hun genererer fakturaer til sine kunder. Jeg forsøger at bruge HTML og JavaScript til at opbygge en webbaseret applikation, der gør det muligt for hende hurtigt at oprette brugerdefinerede fakturaer i stedet for at skrive dem ud manuelt hver gang. I den aktuelle version beder en prompt om et nummer fra hende. Dette nummer genererer et lige antal tre kolonnerækker i HTML. Dette gør det muligt for hende at tilpasse fakturaen med det nøjagtige antal felter, hun har brug for. Kolonne 1 indeholder produktnavnet. I samme række indeholder kolonne 2 enhedstællingen, mens kolonne 3 indeholder de samlede omkostninger for det produkt, som er basisprisen ganget med enhedstællingen. Jeg ønsker, at denne beregning skal ske, når der trykkes på et knap. Men jeg sidder fast. For at udføre matematikken skal jeg være i stand til at få heltalene fra hver række og kolonne og videregive dem til en funktion. Men fordi hver række og kolonne blev genereret automatisk, har de ingen unikke attributter og kan dermed ikke identificeres. Jeg er i stand til at udføre matematikken ned ad hver kolonne, men ikke på tværs af hver række. Da jeg er så ny og kun har lært af et par indledende Codecademy-kurser og nogle YouTube-videoer, ved jeg ikke, hvordan jeg skal vurdere, om jeg nærmer mig projektet helt forkert, eller om der er noget trick, jeg mangler, eller hvis der bare er noget, der ikke har lært endnu. Hvis nogen med en vis ekspertise kunne skubbe mig i den rigtige retning, ville jeg virkelig sætte pris på det! Jeg har vedhæftet al koden til dette indlæg. Undskyld hvis det er et forfærdeligt rod. Gå let på mig, jeg er nybegynder! const invDate = Date (); var field = " " + " " + "
"; document.getElementById ('newInvoice'). onclick = funktion () { lad faktureret navn = prompt ('Hvem er denne faktura lavet til?', 'Indtast et navn'); lad productFields = Antal (prompt ('Hvor mange produktnavne på denne faktura?', 'Indtast et nummer')); lad felter = '' lad dynHtml = '' hvis (faktureret navn! = null && productFields! = null) { for (lad i = 1; i <= productFields; i ++) { felter + = felt}; } ellers {alarm ('Indtast venligst gyldige input.'); }; dynHtml = ""; document.write (dynHtml); document.getElementById ('beregne'). onclick = funktion getQtyFields () { lad qtyInputs = document.getElementsByName ('antal'), resultQty = 0; for (lad j = 0; j ![]()
" + "FAKTURA
" + "Forberedt til: " + faktureret navn + ", på" + "
" + invDate + "
" + felter + "
" + "
2020-12-15 08:10:47
Som du sagde, er dit hovedproblem at finde en måde at give hvert inputfelt inden for deres egen række deres egen unikke identifikator. På denne måde kan du beregne prisen for hver række og indsætte den i prisfeltet. Du skal først starte med felterne: var field = " " + " " + "
"; document.getElementById ('newInvoice'). onclick = funktion () { ... for (lad i = 1; i <= productFields; i ++) { felter + = felt}; ... }; Hver gruppe har brug for sin egen identifikator. På den måde kan du senere henvise til hvert input i hver række for at beregne den samlede underpris. Klasseattributten er noget, du kan tildele flere elementer for at henvise til dem senere. Denne klasse kan være hvad som helst, så længe den ikke er i konflikt med klassen for nogen anden række. Du kan bruge i af sløjfen som din identifikator, da den ændres med hver sløjfe. for (lad i = 1; i <= productFields; i ++) { var field = " " + " " + "
"; felter + = felt }; Dette tilføjer klassens række- {i} til hvert felt i hver række. Bedre endnu, du kan omlægge dette til sin egen funktion funktion createFields (i) { returner " " + " " + "
"; } for (lad i = 1; i <= productFields; i ++) { felter + = createFields (i); }; Du får noget svarende til følgende html
Nu i din beregningsfunktion kan du henvise til disse rækker og beregne deres pris. Her kan du løbe over 'element'-indtastningsfelterne. document.getElementById ('beregne'). onclick = funktion getQtyFields () { lad itemInputs = document.getElementsByName ('item') for (lad i = 0; i) for (lad i = 0; i